package tech.autumn.exception;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

public interface ExceptionHandler extends NonWebExceptionHandler {

    /**
     * 处理异常
     *
     * @param e       异常
     * @param request 请求
     * @return 异常标识
     */
    String handle(Throwable e, HttpServletRequest request);

    /**
     * 处理异常
     *
     * @param e       异常
     * @param request 请求
     * @param context 发生异常是的上下文，由使用方来定义
     * @return 异常标识
     */
    String handle(Throwable e, HttpServletRequest request, Map<String, Object> context);

    /**
     * 处理异常
     *
     * @param name    异常名称
     * @param e       异常
     * @param request 请求
     * @return 异常标识
     */
    String handle(String name, Throwable e, HttpServletRequest request);

    /**
     * 处理异常
     *
     * @param name    异常名称
     * @param e       异常
     * @param request 请求
     * @param context 发生异常是的上下文，由使用方来定义
     * @return 异常标识
     */
    String handle(String name, Throwable e, HttpServletRequest request, Map<String, Object> context);
}
